package com.itheima.clients;
/**
 * 服务消费者(用户模块)     服务提供方(订单模块)
 *
 * 用户需要调用订单 模块接口  根据用户名查询订单列表 findOrderByName()
 * 1 服务提供方(订单模块)
 *   service_api 加入 openFeign 依赖
 *   编写服务接口方法findOrderByName, 在接口上添加@FeignClient("服务提供方服务名称")
 *
 *  2 服务消费者(用户模块)
 *    添加service_api依赖
 *    引导类上添加@EnableFeignClients (basePackages = "com.yore.product.client")
 *    直接注入@Autowired即可
 *
 *  Feign 流程:
 *  1 在消费方引导类上@EnableFeignClients 开启FeignClient扫描
 *  2 @FeignClient("user-service")获取服务器名称
 *  3 基于Eureka 根据服务器名称获取服务实例列表
 *  4 基于Ribbon 负载均衡策略(轮询) 从列表中获取一个具体的实例对象 server
 *  5 从server获取IP和端口 , http:// ip: port
 *  6 基于 Springmvc 添加的注解 将请求地址拼接完成 http:// ip: port/"/user/{id}"
 *  7 完成远程http调用即可
 */

import com.itheima.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient("user-service")  // 注册到注册中的提供方心服务的名称
public interface UserFeignApi {

    @GetMapping("/user/{id}")// ******** controller类上是否添加了requestMapping
    public User queryById(@PathVariable("id") String username);
}
